package traveldreamEJB;

import java.io.Serializable;

import javax.persistence.*;

import supportClass.PacchettoDTO;

import java.util.List;


/**
 * The persistent class for the pacchetto database table.
 * 
 */
@Entity
@Table(name="pacchetto")
@NamedQueries({
	@NamedQuery(name="Pacchetto.findAll", query="SELECT p FROM Pacchetto p"),
	@NamedQuery(name="Pacchetto.findMax", query="SELECT MAX(p.idPacchetto) FROM Pacchetto p"),
	@NamedQuery(name="Pacchetto.find", query="SELECT p FROM Pacchetto p where p.citta=:citta and p.tipologia=:tipologia"),
	@NamedQuery(name="Pacchetto.findAllCitta", query="SELECT p.citta FROM Pacchetto p"),
	@NamedQuery(name="Pacchetto.findAllTipologia", query="SELECT p.tipologia FROM Pacchetto p"),
	@NamedQuery(name="Pacchetto.findAllVoloAndata", query="SELECT p.listaIstanze FROM Pacchetto p JOIN Istanza i WHERE p=:pacchetto and i.elemento.tipo='Volo' and i.dataFine=:dataInizio"),
	@NamedQuery(name="Pacchetto.findAllVoloRitorno", query="SELECT p.listaIstanze FROM Pacchetto p JOIN Istanza i WHERE p=:pacchetto and i.elemento.tipo='Volo' and i.dataInizio=:dataFine"),
	@NamedQuery(name="Pacchetto.findPacchettoByID", query="SELECT p FROM Pacchetto p WHERE p.idPacchetto=:idPacchetto"),
	@NamedQuery(name="Pacchetto.findAllByCitta", query="SELECT p FROM Pacchetto p WHERE p.citta=:citta")
})
public class Pacchetto implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id 
	@Column(unique=true, nullable=false)
	private int idPacchetto;

	@Column(nullable=false, length=45)
	private String citta;

	@Column(nullable=false, length=45)
	private String tipologia;

	@ManyToMany
	@JoinTable(
			name="pacchetto_has_istanza",
			 joinColumns ={
					@JoinColumn(name="Pacchetto_idPacchetto", referencedColumnName="idPacchetto")
				} ,
			inverseJoinColumns ={
					@JoinColumn(name="Istanza_idIstanza", referencedColumnName="idIstanza")
						 
			})
	private List<Istanza> listaIstanze;


	public Pacchetto() {
	}

	public Pacchetto(PacchettoDTO pacchettoDTO, List<Istanza> istanze) {
		// TODO Auto-generated constructor stub
		this.idPacchetto=pacchettoDTO.getIdPacchetto();
		this.citta=pacchettoDTO.getCitta();
		this.tipologia=pacchettoDTO.getTipologia();
		this.listaIstanze=istanze;
	}

	public int getIdPacchetto() {
		return this.idPacchetto;
	}

	public void setIdPacchetto(int idPacchetto) {
		this.idPacchetto = idPacchetto;
	}

	public String getCitta() {
		return this.citta;
	}

	public void setCitta(String citta) {
		this.citta = citta;
	}

	public String getTipologia() {
		return this.tipologia;
	}

	public void setTipologia(String tipologia) {
		this.tipologia = tipologia;
	}

	public List<Istanza> getListaIstanze() {
		return this.listaIstanze;
	}

	public void setListaIstanze(List<Istanza> listaIstanze) {
		this.listaIstanze = listaIstanze;
	}

	



}